package top.humbleyuan.designmode.proxy.dynamic.jdk_proxy;

import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * @Author HumbleYuan
 * @Date 2020/3/22 15:08
 * @Des
 */
public class client {
    public static void main(String[] args) {
        // JDK动态代理
        JDKProxy();
    }

    private static void JDKProxy() {
        // jdk动态代理,被代理类必须要实现接口

        ADC eich = new ADC();

        Hero hero = (Hero) Proxy.newProxyInstance(eich.getClass().getClassLoader(),
                eich.getClass().getInterfaces(), (proxy, method, args1) -> {
                    if("character".equals(method.getName())) {
                        // eich独特特性
                        Method m = (Method) method.invoke(eich,args1);
                        System.out.println("普攻减速");
                        return m;
                    }

                    if("rSkill".equals(method.getName())) {
                        System.out.println("R技能：魔法水晶箭");
                        return method.invoke(eich,args1);
                    }

                    return null;
                });

        hero.character();
        hero.rSkill();
    }
}
